Agile Testing Condensed Japanese Edition
https://cdn-ak.f.st-hatena.com/images/fotolife/n/nihonbuson/20200411/20200411005518.png
#ソフトウェアテスト #アジャイル #書籍 #文献
https://leanpub.com/agiletesting-condensed-japanese-edition
著者 : Janet Gregory、Lisa Crispin
訳者 : Yuya Kazama
(読了 : 2020-05-29)
同じ著者による 『Agile Testing』、『More Agile Testing』 に続く本。
セクション 1 : 基礎
アジャイルテストの核心は、プロダクトの品質の構築やテストにチーム全体が関与すること
欠陥を見つけるためのセーフティネットとしてテスターを頼るのではなく、チームが欠陥を防ぐことを学ぶという思考の変化
アジャイルテストが意味するものとは?
継続的テストモデル : https://danashby.co.uk/2016/10/19/continuous-testing-in-devops/ で紹介されるもの
アジャイルテストの 10 の原則
テストマニフェスト
最後にテストするよりもずっとテストし続ける
バグの発見よりもバグの防止
機能性をチェックするよりもテストの理解
システムを破壊するよりも最高のシステムを構築する
テスターの責任よりも品質に対するチームの責任
アジャイルテストの定義 → アジャイルテスト
チーム全体のアプローチとアジャイルテストのマインドセット
各チームは 「価値ある完成の定義」 (Definition of Done; DoD) について議論し、同意する必要がある
DoD には、コードで見つかった欠陥にチームがどのように対処するかを含める必要がある
チームが欠陥に対処する方法
コーディング完了後に欠陥を見つけるのではなく、欠陥を防ぐことに焦点を当てる
受け入れテスト駆動開発 (Acceptance Test-Driven Development; ATDD) などのプラクティス
欠陥許容度ゼロ (Zero Defect Tolerance) の実践 : イテレーションやストーリーの完了時点で、既知の欠陥がゼロ
チームの複数の人の視点・観点を利用することで、デリバリー時のリスクをよりよく理解できる
アジャイルにおけるテスト計画
セクション 2 : テストアプローチ
例を用いて開発を導く
実例に基づく実践 :
振る舞い駆動型開発 (BDD)
受け入れテスト駆動型開発 (ATDD)
実例による仕様 (Specification by Example; SBE)
具体的な例を使うことの利点 : 新機能から顧客が得る価値を、チームがより正確に把握できる
協調を可能に
顧客と協調
通常はプロダクトオーナーが担当する
顧客が解決しようとしている問題をチームが理解していない場合、チームは間違った問題を解決する可能性があるので、理解が重要。 チーム全員がドメインを理解することを推奨
以下のような質問ができる
「これをどのように使用しますか?」
「最悪の事態は何ですか?」
使えるフレームワーク
インパクトマッピング : https://www.impactmapping.org/
実例マッピング : https://cucumber.io/blog/bdd/example-mapping-introduction/
継続的な探索
探索的テスト
ペルソナを役割や業務に組み合わせるとより良い
チームは顧客にとっての価値を見落としがち。 それらに焦点を当てるよう探索的テストを設計できる
「起こりうる最悪の事態は何ですか?」 「起こりうる最高のことは何か」
経験を最大限に活用するためにペア作業を推奨
モブテストも活用できる : https://www.stickyminds.com/article/amplified-learning-mob-testing
『Explore It!』 の中で、Elisabeth Hendrickson は効果的な探索的テストのためのチャーターの使用方法を説明している
アプリケーションについて学ぶのに必要な情報を整理するのに役立つ
既成概念にとらわれない追加の技法 :
「斜めテスト」 カード : https://leanpub.com/obliquetesting
TestSphere カード : https://www.ministryoftesting.com/dojo/series/testsphere
品質特性 (非機能的な要件) のテスト
品質特性の 2 つの種類
開発の特性 : コードの保守性、コードの再利用性、テスト容易性
運用の特性
品質テストについてはデリバリーチームが積極的に考えること (プロダクトオーナーは品質特性を当然のものと考えることが多い)
DevOps のテスト
デプロイとリリースの違い
デプロイしても機能を隠しておくことはできる
実働環境のテスト
リリースフィーチャーの切り替えの手法や、A/B テストなど
可観測性 (observability; o11y) : ツールで補助された探索的テストの一種 (どゆこと? nobuoka.icon)
https://gyazo.com/1e61593e2e8fb4fd57043c6386a543a3
セクション 3 : 役立つモデル
テストの四象限
https://gyazo.com/043626804785d5906bb0715b47d59457
ストーリー完了に含めることができるテストは、第 1 象限 (左下) と第 2 象限 (左上) の全てと、第 3 象限 (右上) の一部
さらにフィーチャー完了も定義できる
ストーリーレベルでテストできなかった品質特性のテストはフィーチャーレベルで実行するのがおすすめとのこと
テストの自動化戦略の視覚化
セクション 4 : 今日のアジャイルテスト
テスターの新たな役割
テスターの役割は複数のアクティビティで構成される
ステークホルダーとの協力、全体的な品質戦略の整理と調整、リスクの特定など……
最近だと、品質特性に 「チームの健全性」 を追加し始めた (それも品質に大きな影響を与えるもの)
成功の材料
チームを導くための成功要因
チーム全体のアプローチ : テストはフェーズではなく活動
アジャイルテストの考え方 : テスターはもはや品質警察ではなく、「止める / 進む」 を判断する
回帰テストを自動化する : チーム全体を考えて、全てのレベルで自動化
フィードバックの提供と取得 : 迅速なフィードバックが大事。 意図しない変更があったらすぐに気づく、など。 テスターはフィードバックループの作成と短縮の中心にいる
コアプラクティスの基盤構築 : 継続的な統合とか、テスト環境とか、技術的な負債の管理とか、変更を分割するとか
顧客との協調
全体像を見る
信頼関係構築のプラクティス
実例を使う
探索的テストをする
フィーチャーをテストする
継続的に学習する
状況に敏感になる
常に現実的に
成功への道